---
title: 'docker 服务更新'
date: '2023-08-11'
lastmod: '2023-10-03'
tags: ['docker']
# draft: false
summary: 'docker 服务更新支持多种方式，除了挂卷方式不支持更新，其他方式都支持更新。'
# images: ['/static/images/twitter-card.png']
---



#### 灰度更新

```shell
docker service update --image <new_image> --update-parallelism <number_of_concurrent_updates> --update-delay <delay_between_updates> <service_name>
```
--update-parallelism 参数可以控制同时更新的副本数量，--update-delay 参数可以设置更新之间的时间间隔，通过调整这些参数可以实现灰度更新，将服务逐步更新为新的版本，同时观察服务的运行状态。  
```shell
docker service update --image <new_image> --update-parallelism 1 --update-delay 10s <service_name>
```
在 Docker Swarm 中，可以使用 docker service update 命令将服务的图像更新为旧的图像   

**容器监控和健康检查**   
Docker 提供了 HEALTHCHECK 指令，可以在 Dockerfile 中添加健康检查，让 Docker 引擎定期检查容器的健康状况，例如：dockerfile `HEALTHCHECK --interval=5m --timeout=3s CMD curl -f http://localhost/ || exit 1`   
上述 Dockerfile 中的 HEALTHCHECK 指令会让 Docker 引擎每隔 5 分钟使用 curl 命令检查容器的 / 端点是否正常，如果不正常将标记容器为不健康。